gusucode.com > VC++ 汽配销售管理系统(Access)源码程序 > VC++ 汽配销售管理系统(Access)源码程序/源码/DBaseQuery.cpp

    //Download by http://www.NewXing.com
// DBaseQuery.cpp : implementation file
//

#include "stdafx.h"
#include "qpglxt.h"
#include "DBaseQuery.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDBaseQuery dialog
extern CQpglxtApp theApp;

CDBaseQuery::CDBaseQuery(CString sCaption, CString sDateBaseName, CDialog *NextWnd,PrintStruct pr,CWnd* pParent /*=NULL*/)
	: CDialog(CDBaseQuery::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDBaseQuery)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_Caption=sCaption;
	m_DateBaseName=sDateBaseName;
	m_pWnd=NextWnd;
	m_ps =pr;
}


void CDBaseQuery::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDBaseQuery)
	DDX_Control(pDX, IDC_BASEQUERY_EDTCONDITION, m_EdtCondition);
	DDX_Control(pDX, IDC_BASEQUERY_COMEMBLEM, m_ComEmblem);
	DDX_Control(pDX, IDC_BASEQUERY_COMFIELD, m_ComField);
	DDX_Control(pDX, IDC_BASEQUERY_GRID, m_Grid);
	DDX_Control(pDX, IDC_BUT_PRINT, m_ButPrint);
	DDX_Control(pDX, IDC_BUT_QUERY, m_ButQuery);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDBaseQuery, CDialog)
	//{{AFX_MSG_MAP(CDBaseQuery)
	ON_BN_CLICKED(IDC_BUT_PRINT, OnButPrint)
	ON_BN_CLICKED(IDC_BUT_QUERY, OnButQuery)
	ON_NOTIFY(NM_DBLCLK, IDC_BASEQUERY_GRID, OnDblclkBasequeryGrid)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDBaseQuery message handlers

void CDBaseQuery::OnOK() 
{
	// TODO: Add extra validation here
	
	//CDialog::OnOK();
}

void CDBaseQuery::OnButPrint() 
{
	CString sCount;
	m_ps.MainCaptionFontSize=400;
	m_ps.DeckCaptionFontSize=180;
	sCount.Format("%d",rst.GetRecordCount());
	m_ps.TotalNumber=1;
	m_ps.Totals[0]="共计 "+sCount+" 条记录";
	m_ps.Totals[1]="";
	m_ps.Grid=&m_Grid;
	theApp.Print();	
}


BOOL CDBaseQuery::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	this->SetWindowText(m_Caption);
	rst.Open(m_DateBaseName);
	this->m_ComField.SetFieldset(rst);
	m_Grid.ReadOnly(true);
	this->m_ComEmblem.SetCurSel(0);
	this->m_ComField.SetCurSel(0);
	m_Grid.SetDataBase(m_DateBaseName,adCmdTable);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDBaseQuery::OnButQuery() 
{
	CString sSQL,sField,sEmblem,sCondition;
	this->m_ComField.GetWindowText(sField);
	this->m_ComEmblem.GetWindowText(sEmblem);
	this->m_EdtCondition.GetWindowText(sCondition);
	//判断查询字段的类型 
	if(m_ComField.m_CurrentFieldType=="数值型")
		sSQL.Format("SELECT * FROM %s WHERE %s %s %s",this->m_DateBaseName,sField,sEmblem,sCondition);	
	if(m_ComField.m_CurrentFieldType=="字符型")
	{
		if(sEmblem!="LIKE")
			sSQL.Format("SELECT * FROM %s WHERE %s %s '%s'",this->m_DateBaseName,sField,sEmblem,sCondition);	
		else
			sSQL.Format("SELECT * FROM %s WHERE %s %s '%s%%'",this->m_DateBaseName,sField,sEmblem,sCondition);	
	}
	if(m_ComField.m_CurrentFieldType=="日期型")
		sSQL.Format("SELECT * FROM %s WHERE %s %s #%s#",this->m_DateBaseName,sField,sEmblem,sCondition);	
	rst.Open(sSQL,adCmdText);
	m_Grid.AddCellValue(rst);
}

void CDBaseQuery::OnDblclkBasequeryGrid(NMHDR* pNMHDR, LRESULT* pResult) 
{
	if(rst.GetRecordCount()<1)
	{
		m_CurrentRow=0;		
		m_pWnd->DoModal();
		this->m_ComField.SetCurSel(0);
		this->m_ComEmblem.SetCurSel(0);
		this->m_EdtCondition.SetWindowText("");
		this->OnButQuery();
	}
	if(m_Grid.GetHotItem()!=-1)
	{
		m_CurrentRow=m_Grid.GetHotItem();		
		m_pWnd->DoModal();
		this->m_ComField.SetCurSel(0);
		this->m_ComEmblem.SetCurSel(0);
		this->m_EdtCondition.SetWindowText("");
		this->OnButQuery();
	}
	*pResult = 0;
}